Flash non-volatile storage devices are commonly used in computers as high-speed solid state storage devices. These devices require flash memory controllers that typically work as random write/random read, small data block devices. Their data block size is typically 8-16 KB. Since these devices provide random write/random read data traffic, performance requirements limit the amount of error correction and data protection that may be used without reducing performance.
Further, these flash controllers require a small block flash translation layer (FTL) which is a mapping of host based small blocks into pages within the flash memory device. Flash translation layers are typically complex and create additional processes for the flash controller to manage such as garbage collection, management of a very large translation table, wear leveling, power fail recovery, and the like. Because of these requirements, flash translation layers are expensive in terms of area and power within the flash controller, and also reduce performance and increase wear.
Overview
In an embodiment, a storage controller for a storage system is provided. The storage controller includes a host interface, configured to receive first host data traffic for storage within the storage system, a storage interface, configured to transmit storage data to the storage system, and processing circuitry coupled with the host interface and the storage interface, including a storage emulation layer. The first host data traffic is formatted for storage in a first type of data storage. The storage data is formatted for storage in a second type of data storage, different from the first type of data storage.
The processing circuitry is configured to receive the first host data traffic from a host, through the host interface, for storage in a first partition within the storage system, and to translate the first host data traffic into storage data using the storage emulation layer. The processing circuitry is further configured to store the storage data in the first partition, through the storage interface, receive a read request from the host through the host interface, and to retrieve some or all of the storage data from the first partition, through the storage interface.
The processing circuitry is also configured to format the some or all of the storage data into a format compatible with the first host data traffic using the storage emulation layer, and to transfer the formatted data to the host in a configuration corresponding to the first type of data storage through the host interface.
In another embodiment, a method of operating a storage controller is provided. The method includes receiving first host data traffic from a host, through a host interface, for storage in a first partition within a storage system, wherein the first host data traffic is formatted for storage in a first type of data storage, and translating the first host data traffic into storage data, wherein the storage data is formatted for storage in a second type of data storage, different from the first type of data storage.
The method further includes storing the storage data in the first partition, through a storage interface, receiving a read request from the host through the host interface, and retrieving some or all of the storage data from the first partition, through the storage interface. The method also includes formatting the some or all of the storage data into a format compatible with the first host data traffic, and transferring the formatted data to the host in a configuration corresponding to the first type of data storage through the host interface.
In a further embodiment, one or more non-transitory computer-readable media having stored thereon program instructions to operate a storage controller for a storage system are provided. The program instructions, when executed by processing circuitry, direct the processing circuitry to at least receive first host data traffic from a host, through a host interface, for storage in a first partition within the storage system, wherein the first host data traffic is formatted for storage in a first type of data storage, and to translate the first host data traffic into storage data, wherein the storage data is formatted for storage in a second type of data storage, different from the first type of data storage.
The program instructions further direct the processing circuitry to at least store the storage data in the first partition, through a storage interface, receive a read request from the host through the host interface, and to retrieve some or all of the storage data from the first partition, through the storage interface. The program instructions also direct the processing circuitry to at least format the some or all of the storage data into a format compatible with the first host data traffic, and to transfer the formatted data to the host in a configuration corresponding to the first type of data storage through the host interface.